// import { rejects } from 'assert';
// import { promises } from 'fs';

/*
 * @Author: wriliant 
 * @Date: 2019-06-28 10:03:15
 * @Description: 项目连接数据库及操作方法
 * @Last Modified by: wriliant
 * @Last Modified time: 2019-06-28 10:03:15
 */

const mysql = require('mysql');
const config = require('../config/config.js');

/**
 * 将整个方法全部暴漏出去
 * @param sql sql语句
 * @param arg 传递到sql语句中的参数，可以不写
 * @param callback 回调函数，可以不写
 */
const getPromise = function (sql, arg, callback) {
    return new Promise((resolve,reject)=>{
        let connection  = mysql.createConnection(config.DbConfig);
        // 使用连接池，避免开太多的线程，提升性能
        // const pool = mysql.createPool(config.DbConfig);

        //2.开始连接数据库
        connection.connect(function(err) {
            if (err) {
            console.error('连接失败: ' + err.stack);
            return;
            }
            console.log('连接成功 id ' + connection.threadId);
        });

        //3.对数据库的增删改查操作
        connection.query(sql, arg, (err,data)=>{
            // callback && callback(err,data);
            if (data) {
                resolve(data);
            }else{
                reject(err)
            }
        })

        //4.关闭数据库
        connection.end(function (err) {
            if(err){
                console.log('关闭数据库连接失败！');
                throw err;
            }
        });
    });
}
module.exports = {getPromise}
